package come.bjpowernode.javase.thread;
/*
sleep睡眠太久了，希望半道上醒来。
怎么叫醒一个正在睡眠的线程。
注意：这个不是中断线程的执行，是终止线程的睡眠。
 */
public class ThreadTest08 {
    public static void main(String[] args) {
        Thread t = new Thread(new MyRunnable2());
        t.setName("t");
        t.start();


        //希望5秒之后，t线程醒来。
        try {
            Thread.sleep(1000*5);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        //终止t线程的睡眠
        //这种终止睡眠的机制，依靠的是java的异常处理机制。
        t.interrupt();


    }
}

class MyRunnable2 implements  Runnable  {
    //重点：run()当中的异常不能throws，只能try..catch
    //因为run()方法在父类中没有抛出任何异常，子类不能比父类抛出更多的异常。
    //子类重写父类的方法，重写的方法不能比父类抛出更多的/更宽泛的异常。
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName()
                + "--> begin" );
        try {
            Thread.sleep(1000* 60 * 60 * 24 * 365);
        } catch (InterruptedException e) {
            //e.printStackTrace();
        }
        System.out.println(Thread.currentThread().getName()
        + "end");

    }
}